當我們服務了一陣子以後,可能因為種種原因,例如公司政策改變(Docker企業版收費)等,我們需要將某項技術、DB等搬遷到另一個地方,就需要做migration。
比如說我們的舊版網站要sunset了,要變成新版網站,那麼這些資料該怎麼migrate呢?
我們來看一下常見的策略吧~
將應用程式原封不動地搬到新環境,幾乎不做改變。這通常是最快速的方法,但可能無法充分利用新平台的優勢,而且有些時候無法這麼順利的整個搬移過去。
對應用程式做一些優化或改變,以便更好地適應新環境,提升效能或擴展性,但不需要大幅修改原有架構。例如我們從自己架設的伺服器轉移到雲端上面,我們從自己的SQL DB改成cloud SQL,但應用程式的主要邏輯不會被修改到。
重新設計和修改應用程式,完全針對新環境進行優化,充分利用新功能,提升效能或功能性,要花的時間會比前兩項可能還久一點。
例如我們決定將應用程式從VM搬移到Microsoft Azure上面並採用微服務架構,這樣就要對應用程式進行了大規模的修改,將單體式應用程式拆分為數個微服務,這樣才能利用雲端的擴展能力。
用新的、通常是基於雲端的解決方案取代現有應用程式,讓它們更符合當前的需求。
直接買別人做好的產品XD
由於特定的限制或需求,保留某些應用程式或系統在原有環境中不做改變。
例如製造控制系統,依賴於特殊的硬體配置,這種系統不適合搬移到雲端,由於穩定性和成本問題,決定保留系統在本地運行。
終止已經不需要或是重複的應用程式。
如果已經是過時的產品,30年前的系統,那麼很有可能已經可以被現代的許多系統給取代,那麼就可以直接淘汰它。
migration是一個大議題,要怎麼樣才能確保user不會抱怨呢? 在migrate的時候資料怎麼辦? 重寫會要多久? 這些是我們可以多思考的XD